import jieba
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

# 读取词云文件
text = open('../98 作业练习/爬虫练习/实战/文件/GA1DKVHS00019K82.txt', encoding='utf-8').read()

alice_coloring = np.array(Image.open('词云背景图.jpeg'))

# 设置停用词
stopwords = set(STOPWORDS)

wc = WordCloud(
    background_color='white',  # 设置背景颜色  默认是black
    width=800, height=600,
    max_words=10000,  # 词云显示的最大词语数量
    font_path='simhei.ttf',  # 设置字体  显示中文
    max_font_size=100,  # 设置字体最大值
    min_font_size=10,  # 设置字体最小值
    # mask=alice_coloring,  # 你可以通过 mask 参数 来设置词云形状
    stopwords=stopwords,  # 设置停用词
    random_state=50  # 设置随机生成状态，即多少种配色方案
)

# 分词
txt_list = jieba.lcut(text)
# 过滤掉长度为1的词
txt_list = list(filter(lambda x: len(x) > 1, txt_list))
string = ",".join(txt_list)

# 初始化词云
wc.generate(string)
wc.to_file('词云.png')

if wc.mask is not None:
    # 在只设置mask的情况下,你将会得到一个拥有图片形状的词云
    plt.imshow(wc, interpolation='bilinear')
    plt.axis('off')
    plt.figure()
    # 通过这种方式词云将会按照给定的图片颜色布局生成字体颜色策略
    image_colors = ImageColorGenerator(alice_coloring)  # 得到图片的布局颜色
    plt.imshow(wc.recolor(color_func=image_colors), interpolation='bilinear')
    plt.axis('off')
    plt.figure()
    # 显示
    plt.show()
